package leetcode_贪心;

/**
 * @author yzh
 * @data 2021/3/29 21:29
 * 判断每个点是不是【谷】或者【峰】
 * 定为第一个点肯定是【谷】或者【峰】
 * 设置两个值 , pre -- 存储上一个点和前一个点的差值
 * cur -- 存储当前点和下一个点的差值
 * pre 和 cur 指的是线段 , 只有两个线段的值为正负时
 * 才会出现【谷】或者【峰】
 *  * 设置两个值 , pre -- 存储上一个点和前一个点
 */
public class _376_摆动序列 {
    public int test(int[] nums) {
        int pre = 0, cur = 0, ans = 1;
        for (int i = 0; i < nums.length - 1; i++) {
            cur = nums[i + 1] - nums[i];
            if (pre <= 0 && cur > 0 || pre >= 0 && cur < 0) {
                ++ans;
                pre = cur;
            }
        }
        return ans;
    }

    public int wiggleMaxLength(int[] nums) {
        int pre = 0, cur = 0, ans = 1; // 默认最右边有一个峰值
        for (int i = 0; i < nums.length - 1; i++) {
            cur = nums[i + 1] - nums[i];
            if (pre >= 0 && cur < 0 || pre <= 0 && cur > 0) {
                ++ans;
                pre = cur;
            }
        }
        return ans;
    }
}
